/*sigset_t
从上图来看,每个信号只有一个bit的未决标志,非0即1,不记录该信号产生了多少次,阻塞标志也是这样表示的。
因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号
的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而在未决信号集中“有
效”和“无效”的含义是该信号是否处于未决状态。下一节将详细介绍信号集的各种操作。 阻塞信号集也叫做当
前进程的信号屏蔽字(Signal Mask),这里的“屏蔽”应该理解为阻塞而不是忽略。*/


//ssize_t 该类型有128个bit位，用一位二进制位代表信号

#include <stdio.h>
#include <signal.h>

void test(sigset_t* t, int sig){
    if(sigismember(t, sig)){
        printf("信号集里有%d号信号！\n",sig);
    }else{
        printf("信号集里没有%d号信号！\n",sig);
    }
}


int main()
{
    sigset_t set;
    sigemptyset(&set);
    sigaddset(&set, SIGINT);
    test(&set, 2);
    test(&set, 3);
    test(&set, 4);
    sigfillset(&set);
    test(&set, 2);
    test(&set, 3);
    test(&set, 4);
    sigdelset(&set, 2);
    test(&set, 2);
    test(&set, 3);
    test(&set, 4);
    return 0;
}